home *** CD-ROM | disk | FTP | other *** search
/ PD Collection CD 1 / PD Collection CD 1.iso / textual / tex / files / !tex / TeXsource / beebe / 00revhst < prev    next >
Encoding:
Text File  |  1988-05-02  |  31.4 KB  |  678 lines

  1. <BEEBE.TEX.DVI>00REVHST.TXT.72, 20-May-87 10:09:14, Edit by BEEBE
  2. ========================================================================
  3.  
  4. [20-May-87]     from Brendan Mackay (munnari!anucsd.oz!bdm@seismo.CSS.GOV)
  5.                 In openfont.h, the virtual font section can  erroneously
  6.                 reference a null fontfp; change
  7.                     if (virt_font)
  8.                 to
  9.                     if (virt_font && (fontfp != (FILE*)NULL))
  10.  
  11.                 and
  12.                     if (virt_font && virt_save[fileno(fp)].base != (char *)NULL)
  13.                 to
  14.                     if (virt_font && (fp != (FILE*)NULL) &&
  15.                         (virt_save[fileno(fp)].base != (char *)NULL))
  16.  
  17. [15-May-87]     On line 127 of execute.c in the IBM PC-specific MAKE
  18.                 utility, change
  19.                 *str >= 'A' && *str <= 'A' ||
  20.                 to
  21.                 *str >= 'A' && *str <= 'Z' ||
  22.  
  23. [29-Apr-87]     from Brendan Mackay (munnari!anucsd.oz!bdm@seismo.CSS.GOV)
  24.                 In machdefs.h, change
  25.                 #define REWIND(fp)      fseek(fp,0L,0)
  26.                 to
  27.                 #define REWIND(fp)      FSEEK(fp,0L,0)
  28.                 This is not necessary for the family as distributed, but
  29.                 Brendan  has  implemented   the  virtual  font   changes
  30.                 necessary for VAX VMS; they should be incorporated in  a
  31.                 future release.
  32.  
  33. [29-Apr-87]     from Brendan Mackay (munnari!anucsd.oz!bdm@seismo.CSS.GOV)
  34.                 The code for vms_read() [in vaxvms.c] has problems.  One
  35.                 is that you don't  test for end of  file.  The other  is
  36.                 that there is a bug in the C library which prevents  you
  37.                 asking for  more than  65535  bytes at  a time.   It  is
  38.                 documented  that  no  more  than  65535  bytes  will  be
  39.                 returned, but not that you  can't ask for more.  If  you
  40.                 do,  it  reduces  your  request  mod  65536!   Here's  a
  41.                 replacement:
  42.  
  43. /**********************************************************************/
  44. /*-->READ*/
  45. int
  46. READ(file_desc,buffer,nbytes)
  47. register int file_desc;
  48. register char *buffer;
  49. register int nbytes;
  50. {
  51.     register int ngot;
  52.     register int left;
  53.  
  54.     for (left = nbytes; left > 0; /* NOOP */)
  55.     {
  56.         ngot = read(file_desc,buffer,(left > 65024 ? 65024 : left));
  57.         if (ngot < 0)
  58.             return (-1);        /* error occurred */
  59.         if (ngot == 0)          /* eof occurred */
  60.             return(nbytes-left);
  61.         buffer += ngot;
  62.         left -= ngot;
  63.     }
  64.     return(nbytes-left);
  65. }
  66.  
  67. [15-Apr-87]     Completed version 2.07 for general release.
  68.  
  69. [04-Apr-87] to
  70. [15-Apr-87]
  71.                 Changed texidx.c to check for special  characters
  72.                 in generated  \initial{}  commands  and  suitably
  73.                 protect them.
  74.  
  75.                 Changed dviinit.h to try to open output file  and
  76.                 log file  in current  directory  if open  in  the
  77.                 directory of  the  .dvi  file  fails  (presumably
  78.                 because no write access to that directory).
  79.  
  80.                 Adapted  loadbmap()   code   from   dvican.c   to
  81.                 dvijep.c,  and  added  function  declaration   in
  82.                 gblprocs.h,  finally   removing  the   limitation
  83.                 dvijep had for large font characters.
  84.  
  85.                 Rearranged some  struct members  in gblvars.h  to
  86.                 ease debugging.
  87.  
  88.                 Added check in openfont.h for null pfontptr.
  89.  
  90.                 Updated Makefile's and added  ones for KCC,  PCC,
  91.                 and VMS.
  92.  
  93.                 Rewrote 00arit.c  to test  short, int,  and  long
  94.                 integer arithmetic.
  95.  
  96.                 Changed version numbers  in dvi*.c  from 2.06  to
  97.                 2.07.
  98.  
  99.                 Split bopact.h (beginning of page action) out  of
  100.                 eopact.h.
  101.  
  102.                 Rewrote eopact.h to reflect new instant  keyboard
  103.                 response   and   better    control   over    page
  104.                 positioning.
  105.  
  106.                 Increased value of BIGBGCHAR in dvibit.c to allow
  107.                 large characters to be sent as fonts, rather than
  108.                 bitmaps.
  109.  
  110.                 There seems to be a bug in BitGraph Version  3.10
  111.                 which causes characters to be overwritten at  the
  112.                 right margin  when  the actual  screen  width  is
  113.                 used.  Reduced value of XSIZE in dvibit.c to  fix
  114.                 the problem.
  115.  
  116.                 Decreased YSIZE  in dvibit.c  to make  space  for
  117.                 larger command and status area at top of screen.
  118.  
  119.                 Added keybrd.c  and keydef.h  to handle  keyboard
  120.                 input.  keybrd.c was a major effort (900 lines of
  121.                 code and  comments),  but now  nicely  hides  the
  122.                 ugliness of  instant keyboard  input on  all  the
  123.                 operating systems presently supported in the  DVI
  124.                 family.
  125.  
  126.                 Removed references to Berkeley Unix sgtty.h  file
  127.                 and tty structures in dvibit.c and gblvars.h;  no
  128.                 longer needed since keybrd.c hides those details.
  129.  
  130.                 Use JSok instead of  JSerr in f20open.h to  allow
  131.                 jsys() calls to work for both KCC-20 and PCC-20.
  132.  
  133.                 Modified character  screen clipping  decision  in
  134.                 setchar() in dvibit.c.
  135.  
  136.                 Changed raster-op  code from  3  to 9  in  BBNDPD
  137.                 command in setchar() in dvibit.c so that  display
  138.                 is correct  with both  inverse video  and  normal
  139.                 video.
  140.  
  141.                 Split reldfont.h  out  of readfont.h  to  support
  142.                 font unloading needed for dvibit zoom commands.
  143.  
  144.                 Added #include "reldfont.h" to dvi*.c.
  145.  
  146.                 Removed conditionals  around #include  statements
  147.                 and put them in the #include'd file instead; this
  148.                 reduces the  number  of  changes  needed  in  the
  149.                 dvi*.c files  as  new implementations  are  made.
  150.                 This affects f20open.h, strchr.h, and strrchr.h.
  151.  
  152.  
  153.                 Added KCC support changes to dvihead.h,  fatal.h,
  154.                 f20open.h,   gblprocs.h,   machdefs.h,    main.h,
  155.                 strchr.h, strrchr.h, texid3.h.
  156.  
  157.                 Added terminal backslash  to lines in  multi-line
  158.                 macro invocations in dvijep.c and getbmap.h  (KCC
  159.                 restriction).
  160.  
  161.                 Added new function declarations to gblprocs.h.
  162.  
  163.                 Changed dimension of message[] in gblvars.h  from
  164.                 MAXSTR to  MAXMSG; it  needs  to be  larger  than
  165.                 MAXSTR in order to hold error messages containing
  166.                 strings of  size MAXSTR.   MAXMSG is  defined  in
  167.                 gendefs.h.
  168.  
  169.                 Updated lptops.c and lw78.c for KCC.
  170.  
  171.                 Added conditionals to lptops.c to initialize  all
  172.                 unset symbols  to  0  (KCC  requires  this),  and
  173.                 default to OS_UNIX if no host is defined.
  174.  
  175.                 Added KCC_20 and DECLA75 symbols to machdefs.h.
  176.  
  177.                 Changed major DVI  command loop  in prtpage.h  to
  178.                 call kbinput(),  bopact(), and  eopact() for  BBN
  179.                 BitGraph,  and  changed  full  screen  erase   to
  180.                 partial erase to preserve command/status window.
  181.  
  182.                 In texid3.c, changed short name readln to  rdline
  183.                 to remove conflict with KCC library.
  184.  
  185.                 Added GETCHAR routine  to vaxvms.c;  this is  not
  186.                 needed by the DVI driver family, but the idea was
  187.                 used in keybrd.c.
  188.  
  189. [01-Apr-87]     Begin work on Version 2.07
  190.                 General work: major changes to support new KCC-20
  191.                 compiler, substantially enhance  DVIBIT, and  add
  192.                 DVIL75.
  193.  
  194. ========================================================================
  195. [01-Apr-87]
  196.                 End work on Version 2.06:
  197.  
  198. [04-Mar-87]
  199.                 Added declaration of errno in dvihead.h for BSD41
  200.                 and BSD42; they don't have it in errno.h.
  201.  
  202. [04-Mar-87]
  203.                 Added test for null file pointer before calls  to
  204.                 fclose() in abortrun.h and dviterm.h; failure  to
  205.                 do so causes core dumps when exit() is entered in
  206.                 4.1 and 4.2BSD Unix.
  207.  
  208. [27-Feb-87]
  209.                 option.h did not support negative magnifications,
  210.                 like -m-0.5 and -m-1, which was advertized in the
  211.                 documentation, dviman.ltx.   Code  has  now  been
  212.                 added to handle that  case.  Without the fix,  it
  213.                 is  of   course  still   possible  to   get   any
  214.                 magnification value, since e.g. if -m1500 is  the
  215.                 default on  a 300  dpi  printer, then  -m-0.5  is
  216.                 equivalent to -m1369 (1369 = 1500/(1.2**(-0.5))).
  217.  
  218. [26-Feb-87]
  219.                 In dispchar.h, change the line
  220.                       rightones[HOST_WORD_SIZE - 1 - bits_to_next] &
  221.                 to
  222.                       rightones[bits_to_next] &
  223.  
  224.                 This code is not active for non 32-bit  machines,
  225.                 or the IBM PC, and the local 32-bit Unix machines
  226.                 running the driver  family have  been using  only
  227.                 the laser  printer members,  so the  bug was  not
  228.                 caught until  we  actually  tried  DVIPRX  output
  229.                 under VAX VMS.  The effect  it has is that  large
  230.                 vertical  white  streaks  appear  in  the  output
  231.                 bitmap;   dispchar()   is   used   by   all   the
  232.                 low-resolution dot matrix printers.
  233.  
  234. [25-Feb-87]
  235.                 Added code  to  prtbmap() in  dviprx.c  to  print
  236.                 bitmap in hexadecimal  when (debug_code  & 1)  is
  237.                 non-zero.
  238.  
  239. [21-Feb-87]
  240.                 In    prtpage.h,    corrected    "\special"    to
  241.                 "\\special"; this error was caught by the  KCC-20
  242.                 compiler.
  243.  
  244. [10-Feb-87]
  245.                 Yesterday I discovered that  VAX VMS 4.4 printf()
  246.                 wipes out the stack and  kills  the  process if a
  247.                 long string is printed.  This turns out to be the
  248.                 case in outline() in dvitos.c; the code has  been
  249.                 modified to use fputs() there instead.
  250.  
  251. [10-Feb-87]
  252.                 Several debugging sessions  on VAX  VMS  stepping
  253.                 through  the call chain fflush()  -> _flsbuf() ->
  254.                 _flsbuf_record()      ->    write_record()     ->
  255.                 write_buffer() -> write_imbed() -> write_output()
  256.                 ->signal()  -> c$$translate() have  made it clear
  257.                 that the simple scheme in dvi*.c  and lptops.c of
  258.                 checking  for  a   non-zero   return value   from
  259.                 fflush() or  ferror() is  an unreliable  way   to
  260.                 conclude  a legitimate  error (specifically, disk
  261.                 storage   exhausted) exists.  Consequently, these
  262.                 routines have been modified to call clearerr() at
  263.                 the beginning of  loadchar() and prtbmap(),  then
  264.                 to  use a macro DISKFULL()  to test for the error
  265.                 condition.   DISKFULL() is defined in machdefs.h,
  266.                 and errno.h is  now included  by dvihead.h.  This
  267.                 regrettably introduces  small changes in a number
  268.                 of routines, but no other  clean way of doing the
  269.                 job appeared to be feasible.
  270.  
  271. [02-Feb-87]
  272.                 Changed "pagecollation on" to "pagecollation off"
  273.                 in dviimp.c.   With  version 3.3  of  the  Imagen
  274.                 Image Processor software, there seems to be a bug
  275.                 in that "pagecollation on" causes page  reversal.
  276.                 I have reported this to Imagen.
  277.  
  278. [20-Jan-87]
  279.                 Replaced  page_xxx[]  arguments  to  sscanf()  in
  280.                 option.h  with  int  temporaries  p1,p2,p3;   the
  281.                 page_xxx[] values are  of type  INT16 which  does
  282.                 not match  the  %d  format  items.   The  use  of
  283.                 sscanf()  in  fontsub()  is  okay.   The  one  in
  284.                 special() in dvialw.c has the type COORDINATE for
  285.                 the variables llx,  lly, urx, ury;  the type  has
  286.                 been changed to int.
  287.  
  288.                 This bug surfaced on an  HP Unix system with  the
  289.                 FOCUS chip;  it is  disguised  on the  DEC-20  by
  290.                 virtue of short, int, and long all being one word
  291.                 long, and  on  the VAX  and  Intel  architectures
  292.                 which address  these values  by their  low-order,
  293.                 rather than high-order, byte (i.e. little  Endian
  294.                 order).
  295.  
  296. [16-Jan-87]
  297.                 Corrected error  in  tosprx.c which  resulted  in
  298.                 loss of  first  page,  and added  test  to  avoid
  299.                 unnecessary OR'ing zero bits into bitmap.
  300.  
  301. [10-Jan-86]
  302.                 In machdefs.h, reset MAXOPEN to NFILES-6 or less,
  303.                 where NFILES is the limit  on the number of  open
  304.                 files  set   in  stdio.h.    It  was   previously
  305.                 NFILES-5, which can cause an abort with a message
  306.                 "unable to open error log file" because all  file
  307.                 handles are in use.
  308.  
  309. [07-Jan-86]
  310.                 Finished preliminary  release of  DVICAN for  the
  311.                 Canon LBP-8 A2 laser  printer.  At present,  this
  312.                 is  forced  to  send  bitmaps  for  every  single
  313.                 typeset  character,  since  the  downloaded  font
  314.                 mechanism  does  not   work  reliably.    Canon's
  315.                 documentation is  abysmal, and  after tearing  my
  316.                 hair out staring  at hex dumps  of the output  of
  317.                 many test files, I received a hex dump of a  file
  318.                 from a site  in Holland using  a driver  obtained
  319.                 from Japan; to my surprise, they did not use  the
  320.                 download mechanism,  just  bitmaps, so  I  expect
  321.                 they hit the  same problems I  did.  I intend  to
  322.                 try to find  out more  detailed information  from
  323.                 the  local   Canon   dealer--perhaps   there   is
  324.                 something magic missing.  It is indeed suspicious
  325.                 however, when  TeX  input  "ABABABABAB"  produces
  326.                 "ABA A A A ", and "A SHORT STORY" produces "A  SH
  327.                 RT T Y"--characters  apparently randomly  (though
  328.                 reproducibly) dropped from the printed page.
  329.  
  330.                 The penalty for sending bitmaps instead of  fonts
  331.                 is severe--on a 15-page  test file, it took  10.8
  332.                 times as  many  bytes/page as  DVIJEP,  averaging
  333.                 nearly 95K characters/page,  for a throughput  of
  334.                 one printed page every 2 to 4 minutes, instead of
  335.                 the 4/minute available from the LaserJet Plus.
  336.  
  337. [20-Dec-86]
  338.                 Updated DVIBIT,  fixing several  things that  had
  339.                 been broken by changes which could not be  tested
  340.                 earlier, and improving the interactive interface.
  341.                 End-of-page action in prtpage.h has been expanded
  342.                 and moved out to eopact.h.  Warning messages  are
  343.                 suppressed for  DVIBIT when  quiet mode  (-q)  is
  344.                 selected to avoid needlessly trashing the screen.
  345.  
  346.                 Default magnification for low-resolution  devices
  347.                 changed from 579 (magstep -3 in 200dpi family) to
  348.                 603 (magstep -5 in 300dpi family).
  349.  
  350.                 Added run-time  selectable virtual  font  support
  351.                 for  performance   improvement,   particular   on
  352.                 networked file  systems  where  the  overhead  of
  353.                 reading small packets becomes unacceptably large.
  354.                 With .PK fonts, most font files for normal  sized
  355.                 text are 4K to 8K bytes, and for SliTeX text, 15K
  356.                 to 20K bytes.   With up  to 15  fonts open,  this
  357.                 probably requires less than 200K bytes of memory,
  358.                 which is available for the non-bitmapped  drivers
  359.                 even on my IBM PC.
  360.  
  361. [15-Dec-86]
  362.                 Reorganized  machdefs.h  to  group  each  set  of
  363.                 machine-specific changes  inside one  conditional
  364.                 for  that  machine.   Removed  #undef's--if   the
  365.                 compiler warns of  redefinitions, that is  useful
  366.                 feedback that the right set has been chosen.
  367.  
  368.                 Completed  port  to  VAX  VMS.   VMS  C  has   an
  369.                 incomplete library and faulty implementations  of
  370.                 fseek(), ftell(),  and ungetc().   To get  around
  371.                 these, macros FSEEK, FTELL, and UNGETC have  been
  372.                 used throughout  the  code, and  machdefs.h  will
  373.                 define them to point to special versions found in
  374.                 vaxvms.c in  the OS_VAXVMS  conditional  section.
  375.                 The VMS debugger, particular in screen mode where
  376.                 the source  code,  output, and  debug  input  are
  377.                 displayed in three  windows is excellent,  though
  378.                 unnecessarily verbose.  VMS C makes memory page 0
  379.                 inaccessible.   This  caught  two  instances   of
  380.                 dereferencing of NULL pointers in movedown.h  and
  381.                 moveover.h.
  382.  
  383.                 Logical names for VAX VMS are chosen to match the
  384.                 Kellerman and Smith TeX implementation.  DVI  and
  385.                 font file formats are assumed to be fixed binary;
  386.                 stream files would be  better (since fseek()  and
  387.                 ftell() work properly  for them,  and padding  to
  388.                 block boundaries is  unnecessary), but their  use
  389.                 would require rewriting change files for all  the
  390.                 TeXware.
  391.  
  392.  
  393. [05-Dec-86]
  394.                 In dviinit.h  (TOPS-20  and VMS  only),  fix  bug
  395.                 causing referencing of *(NULL + 1).  Change
  396.                 "if (isdigit(*(tcp1+1)))"
  397.                 to
  398.                 "if ((tcp1 != (char*)NULL) && isdigit(*(tcp1+1)))"
  399.  
  400. [15-Nov-86]
  401.                 In fontfile.h (bug  found Unix conditional  code,
  402.                 but could happen if  other machines were  added),
  403.                 in the loop beginning
  404.  
  405.                 m = 0;          /* index in filelist[] */
  406.                 for (k = 0; k < MAXFORMATS; ++k) /* loop over possible file types */
  407.                 {
  408.                   *filelist[k] = '\0';  /* Initially, all filenames are empty */
  409.  
  410.                 the filelist[]  entry  is cleared  on  each  loop
  411.                 iteration, but in  the Unix code  section, it  is
  412.                 actually advancing over  two entries  at a  time.
  413.                 The initialization  must  be  moved  out  into  a
  414.                 separate new loop preceding the old one:
  415.  
  416.                 for (k = 0; k < MAXFORMATS; ++k)
  417.                   *filelist[k] = '\0';  /* Initially, all filenames are empty */
  418.  
  419.  
  420. [13-Nov-86]
  421.                 Update makefile.1, makefile.2, makefile.msc for
  422.                 IBM PC.
  423.  
  424. [13-Nov-86]
  425.                 Add extra library .h file #include's in dvihead.h
  426.                 for  IBM   PC   MICROSOFT  C   library   function
  427.                 declarations.
  428.  
  429. [12-Nov-86]
  430.                 Change malloc to MALLOC in getbmap.h, loadchar.h,
  431.                 machdefs.h, and readfont.h; for IBM PC Microsoft,
  432.                 this  is  defined  to  use  calloc()  instead  of
  433.                 malloc() in machdefs.h.  This  seems to remove  a
  434.                 long-standing  bug  of  the  driver  hanging  the
  435.                 machine after printing the last page,  presumably
  436.                 while in the free()  calls in dviterm().  I  made
  437.                 extensive tests on the DEC-20 to try to reproduce
  438.                 this bug,  by using  DDT to  introduce code  that
  439.                 initializes the  free stack  area and  malloc()'d
  440.                 memory  to  values  which  would  cause   integer
  441.                 overflow if  used as  integers, and  would  cause
  442.                 illegal memory  references if  used as  pointers.
  443.                 No failure could be precipitated by this.  On the
  444.                 IBM PC, the symptom was that the driver would run
  445.                 on a freshly-booted machine (booting sets  memory
  446.                 to a specific non-zero bit pattern), but if other
  447.                 programs had been run,  it would sometimes  hang.
  448.                 I  found   that   by  using   the   debugger   to
  449.                 preinitialize  memory  to  a  fixed  bit  pattern
  450.                 before running  DVIJEP,  I could  repeatedly  run
  451.                 DVIJEP all night long.  The change from  malloc()
  452.                 to calloc(),  which zeroes  the returned  memory,
  453.                 permitted DVIJEP to run successfully 85 times  in
  454.                 a row; when I subsequently reran the old version,
  455.                 it hung  the  PC.   Recent  netmail  has  carried
  456.                 numerous discussions  of irregularities  of  both
  457.                 Lattice and Microsoft C  malloc()'s; this may  be
  458.                 one more manifestation.
  459. [31-Oct-86]
  460.                 Fixed a dumb typo in dvialw.c and dvijep.c; in
  461.                 setstr(), change
  462.                 (void)fprintf(stderr,isprint(c) ? "%c" : "\\%03o",c);
  463.                 to
  464.                 (void)fprintf(stderr,isprint(str[k]) ? "%c" : "\\%03o",str[k]);
  465.  
  466. [24-Oct-86]
  467.                 Whoops!  Somehow,  warning()  lost  its  code  to
  468.                 write its message  on stderr as  well as the  log
  469.                 file.  At the end, add the lines
  470.  
  471.                     NEWLINE(stderr);
  472.  
  473.                 #if    (OS_TOPS20 | OS_VAXVMS)
  474.                     (void)putc('%',stderr);     /* percent at start of line */
  475.                 #endif
  476.  
  477.                     (void)fputs(msg,stderr);
  478.                     NEWLINE(stderr);
  479.                     if (g_logname[0])
  480.                     {
  481.                         (void)fprintf(stderr,
  482.                             "Current TeX page counters: [%s]",tctos());
  483.                         NEWLINE(stderr);
  484.                     }
  485.  
  486.                 The check of  g_logname[0] suppresses an  attempt
  487.                 to supply page counters when no .DVI file has yet
  488.                 been opened.
  489.  
  490. [24-Oct-86]
  491.                 If an  invalid option  is detected  in  option(),
  492.                 then warning()  and/or  fatal() will  be  called.
  493.                 However, there is not  yet a file name  available
  494.                 for a log file, and g_dolog is initially TRUE, so
  495.                 both warning() and fatal() will abort because the
  496.                 log  file  cannot  be  opened.   Change  the  "if
  497.                 (g_dolog ...) statements in fatal.h and warning.h
  498.                 to  include  the  condition  "&&   g_logname[0]".
  499.                 Since  C  requires   external  variables  to   be
  500.                 initialized to  zero,  g_logname[0] =  '\0'  when
  501.                 option() is called, and  no attempt will be  made
  502.                 to open the log file in warning() and fatal().
  503.  
  504. [21-Oct-86]
  505.                 For  TOPS-20  only,  set  output  and  log   file
  506.                 generation retention counts to zero, implying all
  507.                 generations will be kept.  That way, if the  user
  508.                 runs dvixxx for the same file, but with different
  509.                 parameters (-x  and -y  are good  examples),  the
  510.                 earlier versions  will not  be lost.   This  adds
  511.                 some new flags to machdefs.h, and some additional
  512.                 code to dviinit.h,  fatal.h, and warning.h  right
  513.                 after their  fopen()  calls.   fopen(,"w+")  will
  514.                 reuse an existing file, so we changed the logfile
  515.                 generation to "-1", always giving a new file.
  516.  
  517. [21-Oct-86]
  518.                 In prtpage.h, inserted
  519.                     rule_height = -1;   /* reset last rule parameters */
  520.                     rule_width = -1;
  521.                 before line
  522.                     str_ycp = -1;
  523.                 in POSTSCRIPT section  (about line  115) of  case
  524.                 BOP.  I caught this when I did `dvialw foo.dvi.*'
  525.                 today-- after  the  first  file,  the  PostScript
  526.                 output contained  a  reference  to  the  Q  macro
  527.                 before a B had been issued to define h and w, the
  528.                 previous bar dimensions.
  529.  
  530. [13-Oct-86]
  531.                 Added  -d32  option  to  cause  display  of   all
  532.                 truncated  off-page  text   strings.   This   was
  533.                 prompted by my  wasting time looking  for what  I
  534.                 thought was a bug in setstr() with long  strings.
  535.                 Changes in  functions setstr()  and setchar()  in
  536.                 dvialw.c and dvijep.c,  and setchar.h, as well as
  537.                 documentation in dviman.ltx and dviman.texinfo.
  538.  
  539. [15-Sep-86]
  540.                 Added -z option  for PostScript  and HP  LaserJet
  541.                 Plus on  TOPS-20 only;  this types  in a  command
  542.                 "DVISPOOL: dvifilename\n", permitting the user to
  543.                 define a spooler for  the DVI file.  This  typein
  544.                 is not automatic  as in TOPS-20  TeX, because  it
  545.                 may interfere with batch and .mic files; however,
  546.                 the final  newline  is supplied,  because  it  is
  547.                 assumed the user wanted  it if the option  switch
  548.                 was  given.   Changes  in  dviterm.h,  gblvars.h,
  549.                 option.h, and  usage.h, with  new BOOLEAN  global
  550.                 variable "spool_output".
  551.  
  552. [15-Sep-86]
  553.                 Added page_step[]  to  allow  printing  pages  in
  554.                 steps other 1, such  as for duplex printing,  and
  555.                 option     -obeginpage:endpage:steppage;     this
  556.                 required changes in dvifile.h, gblvars.h, main.h,
  557.                 option.h, and usage.h.
  558.  
  559. [09-Sep-86]
  560.                 Changed  checksum  error  message  in   readgf.h,
  561.                 readpk.h, and  readpxl.h to  output checksums  in
  562.                 octal and  hexadecimal as  well as  decimal,  and
  563.                 explain  why  the  mismatch  is  likely  to  have
  564.                 occurred.
  565.  
  566.                 Changed debug_code to debug_code & 4 in dvijep.c,
  567.                 and updated dviman.ltx to define settings of  -d#
  568.                 option for selective debug output.
  569.  
  570.                 Added DEBUG_OPEN() calls to dvialw.c,  dviinit.h,
  571.                 fatal.h, fontsub.h,  openfont.h,  and  warning.h,
  572.                 and definition of DEBUG_OPEN() to gendefs.h.
  573.  
  574.                 Delete doubled word in comment in charpk.h.
  575.  
  576.                 Insert typecast in fillrect.h:
  577.                 *p = (UNSIGN32)ONES.
  578.  
  579.                 Insert typecast in dvibit.c:
  580.                 tcharptr->istoobig = ((int)(tcharptr->hp*
  581.                 ((tcharptr->wp+15) >> 4)) >= BIGBGCHAR);
  582.  
  583.                 Change  macro  argument  c  to  ch  in   dvijep.c
  584.                 (Microsoft C  version 4.0  otherwise thinks  that
  585.                 the c  in  the  format  specification  is  to  be
  586.                 expanded too):
  587.                 #define SETCHARCODE(fontnumber,ch) {\
  588.                 if (fontnumber)\
  589.                 (void)fprintf(plotfp,"\033*c%dd%dE",fontnumber,MAPCHAR(ch));\
  590.                 else\
  591.                 (void)fprintf(plotfp,"\033*cd%dE",MAPCHAR(ch));\
  592.                 }
  593.  
  594.  
  595. [04-Sep-86]
  596.                 Fixed handling of -o-#  in option.h; I forgot  to
  597.                 check for signs in skipping the number.
  598.  
  599. [28-Aug-86]
  600.                 Wrote errshow.c; it is a filter which merges  the
  601.                 error message file output  by Microsoft C with  a
  602.                 copy  of  the  source  line  causing  the   error
  603.                 message.
  604.  
  605. [28-Aug-86]
  606.                 Minor changes for type matching.  Added typecasts
  607.                 in chargf.h,  charpk.h, dvialw.c,  and  dvijep.c.
  608.                 Changed  type  declarations  of  m_begin,  m_end,
  609.                 m_step in dvitype.h, of  k in fontfile.h, and  of
  610.                 fontfile() arguments in  gblprocs.h.  Added  code
  611.                 for  IBM_PC_MICROSOFT  to  include  stdlib.h  and
  612.                 string.h in main.h.  Version  3.0 of Microsoft  C
  613.                 has a number of errors and inconsistencies in the
  614.                 library file  type declarations  for stdio.h  and
  615.                 string.h.   I  fixed  declarations  and  use   of
  616.                 putc(), putchar(),  fileno(), _flsbuf(),  thereby
  617.                 eliminating  "strong  type  mismatch"  errors  on
  618.                 every  instance  of   use  of  these   functions.
  619.                 Declarations of argument types for strxxx()  have
  620.                 int instead of char, and unsigned int instead  of
  621.                 int,   for    strchr(),   strlen(),    strrchr(),
  622.                 strncpy(), strncat(), and strncmp(), which is  at
  623.                 variance  with  Kernighan  &  Ritchie,  and  with
  624.                 Harbison & Steele,  so use of  these still  gives
  625.                 type  mismatch  errors.   I  am  not  fixing  the
  626.                 library file  declarations  pending  seeing  what
  627.                 Version 4.0 has  to offer,  and what  the ANSI  C
  628.                 Standard committee does with them.
  629.  
  630. [21-Aug-86]
  631.                 Add  -e   option   in   option.h   for   run-time
  632.                 command-line   definition   of    ``environment''
  633.                 variables, and  move initialization  of  xx_index
  634.                 out  of  initglob()  into  dvifile().   This  was
  635.                 prompted by the use of Unix server invocations of
  636.                 the drivers  through  calls  to  ``system("dvixxx
  637.                 filename")''.  Such a  call creates  a new  shell
  638.                 which,  although   it   inherits   the   caller's
  639.                 environment,  may  in   fact  require   different
  640.                 environment variables, especially for things like
  641.                 FONTLIST and TEXFONTS.
  642.  
  643. [21-Aug-86]
  644.                 Change fontlist.h, gendefs.h,  and openfont.h  to
  645.                 support a  more general  mechanism of  font  file
  646.                 name generation.  fontlist()  now returns a  list
  647.                 of pointers  to a  series of  possible font  file
  648.                 names;  the  first  null   string  in  the   list
  649.                 terminates  it.   The  Unix  and  VAX  VMS   code
  650.                 sections in  fontlist.h now  generate names  with
  651.                 the magnification both in  the directory name  as
  652.                 well as in the extension.  This was prompted by a
  653.                 local need  at  Utah  with  some  networked  Unix
  654.                 workstations which have both flavors of font file
  655.                 storage.
  656.  
  657. [21-Aug-86]
  658.                 Change handling of TeX  \countn values to  INT32,
  659.                 instead of UNSIGN32; roman-numeral pages come out
  660.                 with negative  page numbers  in PLAIN.TEX.   This
  661.                 affects the declaration and use of tex_counters[]
  662.                 in dviinit.h, gblvars.h, prtpage.h, and  tctos.h.
  663.  
  664. [18-Aug-86]
  665.                 Allow negative page  numbers on  -o#:# switch  to
  666.                 mean pages  from end  (-1 =  last, -2  = next  to
  667.                 last, etc.).  sscanf() format change in option(),
  668.                 and introduce PAGENUMBER() macro in dvifile().
  669.  
  670. [15-Aug-86]
  671.                 Conversion of the  font magnification factor  for
  672.                 *.*pxl files in fontfile.h  to dots/inch for  the
  673.                 *.*gf and *.*pk files forgot to round up.   Thus,
  674.                 mag 1643  became  328 instead  of  329.   Because
  675.                 fontfile() gets a truncated magnification  value,
  676.                 the  rounding   is   non-trivial;   comments   in
  677.                 fontfile() describe what is necessary.
  678.